package logger

import (
	"fmt"
	"os"
	"path/filepath"

	"github.com/sirupsen/logrus"
	"gopkg.in/natefinch/lumberjack.v2"
)

var (
	// 全局日志实例
	Log *logrus.Logger
)

// 初始化日志系统
func InitLogger(logDir string, level string) error {
	// 创建日志目录
	if err := os.MkdirAll(logDir, 0755); err != nil {
		return fmt.Errorf("创建日志目录失败: %v", err)
	}

	// 创建日志实例
	Log = logrus.New()

	// 设置日志格式
	Log.SetFormatter(&logrus.JSONFormatter{
		TimestampFormat: "2006-01-02 15:04:05",
	})

	// 设置日志级别
	logLevel, err := logrus.ParseLevel(level)
	if err != nil {
		logLevel = logrus.InfoLevel
	}
	Log.SetLevel(logLevel)

	// 设置日志输出
	Log.SetOutput(&lumberjack.Logger{
		Filename:   filepath.Join(logDir, "app.log"),
		MaxSize:    100,    // 单个日志文件最大100MB
		MaxBackups: 30,     // 保留30个备份
		MaxAge:     7,      // 保留7天
		Compress:   true,   // 压缩旧日志
	})

	return nil
}

// 创建子日志记录器
func NewLogger(module string) *logrus.Entry {
	return Log.WithField("module", module)
} 